// 《围棋》作者版权所有。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包httputil提供了HTTP实用程序功能，补充了net/HTTP包中更常见的功能。
package httputil

import (
	"io"
	"net/http/internal"
)

// NewChunkedReader返回一个新的chunkedReader，该程序在返回之前将从r 
// 读取的数据转换为HTTP“chunked”格式。
// 当读取最后一个0长度的块时，chunkedReader返回io.EOF。
// 
// 普通应用程序不需要NewChunkeReader。http包
// 在读取响应体时自动解码分块。
func NewChunkedReader(r io.Reader) io.Reader {
	return internal.NewChunkedReader(r)
}

// NewChunkedWriter返回一个新的chunkedWriter，该writer将写入内容转换为HTTP 
// “chunked”格式，然后再将其写入w。关闭返回的chunkedWriter 
// 发送标记流结束的最后一个0长度的块，但
// 不发送拖后出现的最后一个CRLF；拖车和最后一个
// CRLF必须单独书写。
// 
// 普通应用程序不需要NewChunkedWriter。如果处理程序没有设置
// 包将自动添加分块。在处理程序
// 内容长度头，http 
// 中使用NewChunkedWriter将导致双重分块或内容长度为
// 长度的分块，两者都是错误的。
func NewChunkedWriter(w io.Writer) io.WriteCloser {
	return internal.NewChunkedWriter(w)
}

// 读取格式错误的分块数据时返回ErrLineTooLong 
// 行过长。
var ErrLineTooLong = internal.ErrLineTooLong
